﻿using Echart.Model.Data;
using Echart.Model.TextStyle;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Echart.Model.Legend
{
    public class legend
    {
        /// <summary>
        /// 图例的类型
        /// </summary>
        public string type { get; set; }

        /// <summary>
        /// 组件 ID
        /// </summary>
        public string id { get; set; }

        /// <summary>
        /// 组件是否显示
        /// </summary>
        public bool? show { get; set; }

        /// <summary>
        /// 所有图形的 zlevel 值。
        /// </summary>
        public double? zlevel { get; set; }

        /// <summary>
        /// 组件的所有图形的z值。控制图形的前后顺序。z值小的图形会被z值大的图形覆盖。
        /// </summary>
        public double? z { get; set; }

        /// <summary>
        ///  组件离容器左侧的距离。
        /// </summary>
        public string left { get; set; }

        /// <summary>
        ///  组件离容器上侧的距离
        /// </summary>
        public string top { get; set; }

        /// <summary>
        ///  组件离容器下侧的距离
        /// </summary>
        public string bottom { get; set; }

        /// <summary>
        ///  组件离容器右侧的距离
        /// </summary>
        public string right { get; set; }

        /// <summary>
        /// 图例组件的高度。默认自适应。
        /// </summary>
        public string height { get; set; }

        /// <summary>
        /// 图例组件的宽度。默认自适应。
        /// </summary>
        public string width { get; set; }

        /// <summary>
        /// 图例标记和文本的对齐.可选：'auto' 'left' 'right'
        /// </summary>
        public string orient { get; set; }

        /// <summary>
        /// 图例列表的布局朝向。可选： 'horizontal' 'vertical'
        /// </summary>
        public string align { get; set; }

        /// <summary>
        /// 图例内边距，单位px，默认各方向内边距为5，接受数组分别设定上右下左边距。
        /// </summary>
        public double?[] padding { get; set; }

        /// <summary>
        /// 图例每项之间的间隔。横向布局时为水平间隔，纵向布局时为纵向间隔。
        /// </summary>
        public double? itemGap { get; set; }

        /// <summary>
        /// 图例标记的图形宽度。
        /// </summary>
        public double? itemWidth { get; set; }

        /// <summary>
        /// 图例标记的图形高度。
        /// </summary>
        public double? itemHeight { get; set; }

        /// <summary>
        /// 是否在缩放时保持该图形的长宽比。
        /// </summary>
        public bool? symbolKeepAspect { get; set; }

        /// <summary>
        /// 用来格式化图例文本。可以采用脚本赋值
        /// </summary>
        public string formatter { get; set; }

        /// <summary>
        /// 是否在缩放时保持该图形的长宽比。
        /// </summary>
        public bool? selectedMode { get; set; }

        /// <summary>
        /// 暂未使用
        /// </summary>
        public object selected { get; set; }

        /// <summary>
        /// 图例的公用文本样式。
        /// </summary>
        public textStyle textStyle { get; set; }

        /// <summary>
        /// 图例项的 icon。
        /// </summary>
        public object toolTip { get; set; }

        /// <summary>
        /// 暂未使用
        /// </summary>
        public string icon { get; set; }

        /// <summary>
        /// 暂未使用
        /// </summary>
        public string[] data { get; set; }

        /// <summary>
        /// 标题背景色，默认透明。
        /// </summary>
        public string backgroundColor { get; set; }

        /// <summary>
        /// 标题的边框颜色
        /// </summary>
        public string borderColor { get; set; }

        /// <summary>
        /// 标题的边框线宽。
        /// </summary>
        public double? borderWidth { get; set; }

        /// <summary>
        /// 圆角半径，单位px，支持传入数组分别指定 4 个圆角半径
        /// </summary>
        public double?[] borderRadius { get; set; }

        /// <summary>
        /// 图形阴影的模糊大小。注意：此配置项生效的前提是，设置了 show: true 以及值不为 tranparent 的背景色 backgroundColor。
        /// </summary>
        public double? shadowBlur { get; set; }

        /// <summary>
        /// 阴影颜色,注意：此配置项生效的前提是，设置了 show: true
        /// </summary>
        public string shadowColor { get; set; }

        /// <summary>
        /// 阴影水平方向上的偏移距离。注意：此配置项生效的前提是，设置了 show: true
        /// </summary>
        public double? shadowOffsetX { get; set; }

        /// <summary>
        /// 阴影水平方向上的偏移距离。注意：此配置项生效的前提是，设置了 show: true
        /// </summary>
        public double? shadowOffsetY { get; set; }

        #region 条件限制属性 type 为 'scroll' 时有效。
        /// <summary>
        /// 图例当前最左上显示项的 dataIndex。
        /// </summary>
        public int? scrollDataIndex { get; set; }

        /// <summary>
        /// 图例控制块中，按钮和页信息之间的间隔。
        /// </summary>
        public double? pageButtonItemGap { get; set; }

        /// <summary>
        /// 图例控制块和图例项之间的间隔。
        /// </summary>
        public double? pageButtonGap { get; set; }

        /// <summary>
        /// 图例控制块的位置。可选值为：'start'：控制块在左或上。'end'：控制块在右或下。
        /// </summary>
        public string pageButtonPosition { get; set; }

        /// <summary>
        /// legend.type 为 'scroll' 时有效。图例控制块中，页信息的显示格式。默认为 '{current}/{total}'，其中 {current} 是当前页号（从 1 开始计数），{total}是总页数。
        /// </summary>
        public string pageFormatter { get; set; }

        /// <summary>
        /// 图例控制块的图标。
        /// </summary>
        public object pageIcons { get; set; }

        /// <summary>
        /// 翻页按钮的颜色。
        /// </summary>
        public string pageIconColor { get; set; }

        /// <summary>
        /// 翻页按钮不激活时（即翻页到头时）的颜色。
        /// </summary>
        public string pageIconInactiveColor { get; set; }

        /// <summary>
        /// 翻页按钮的大小
        /// </summary>
        public double[] pageIconSize { get; set; }

        /// <summary>
        /// 图例页信息的文字样式。
        /// </summary>
        public textStyle pageTextStyle { get; set; }

        #endregion

        /// <summary>
        /// 图例翻页是否使用动画。
        /// </summary>
        public bool? animation { get; set; }

        /// <summary>
        /// 图例翻页时的动画时长。
        /// </summary>
        public double? animationDurationUpdate { get; set; }

        /// <summary>
        /// 暂未使用
        /// </summary>
        public object emphasis { get; set; }

        /// <summary>
        /// 暂未使用
        /// </summary>
        public bool? selector { get; set; }

        /// <summary>
        /// 暂未使用
        /// </summary>
        public object selectorLabel { get; set; }

        /// <summary>
        /// 暂未使用
        /// </summary>
        public string selectorPosition { get; set; }

        /// <summary>
        /// 暂未使用
        /// </summary>
        public double? selectorItemGap { get; set; }

        /// <summary>
        /// 暂未使用
        /// </summary>
        public double? selectorButtonGap { get; set; }
    }
}
